﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using bolsatrabajo.Dominio.DAO;

namespace bolsatrabajo.Persistencia.DAO
{
    public class PostulanteDAO
    {
        private String cadenaConexion = "Data Source=(local);Initial Catalog=bdbolsatrabajo; User Id=root;Password=12345678;";
        private SqlConnection conexion;

        public PostulanteDAO()
        {
             conexion = new SqlConnection(cadenaConexion);
        }
        public Postulante CrearPostulante(Postulante postulante)
        {
            if (this.ObtenerPostulante(postulante.Correo) == null)
            {
                conexion.Open();
                String sentencia = "INSERT INTO tbpostulante VALUES('" + postulante.Nombres + "','" + postulante.ApellidoPaterno + "','" + postulante.ApellidoMaterno + "','" + postulante.Sexo + "',convert(datetime,'" + postulante.FechaNacimiento + "',103),'" + postulante.Correo + "','" + postulante.Contrasena + "')";
                SqlCommand comando = new SqlCommand(sentencia, conexion);
                comando.ExecuteNonQuery();
                conexion.Close();
            }else{
                throw new Exception("Postulante ya existe en BD");
            }
            return this.ObtenerPostulante(postulante.Correo);
        }
        public Postulante ObtenerPostulante(String correo)
        {
            conexion.Open();
            String sentencia = "SELECT correo, nombres, apellidopaterno, apellidomaterno, sexo, convert(nvarchar,fechanacimiento) as fechanacimiento, contrasena FROM tbpostulante WHERE correo='" + correo + "'";
            SqlCommand comando = new SqlCommand(sentencia, conexion);
            SqlDataReader resultado = comando.ExecuteReader();
            Postulante postulante = null;
            if (resultado.HasRows)
            {
                resultado.Read();
                postulante = new Postulante();
                postulante.Correo = (String)resultado["correo"];
                postulante.Nombres = (String)resultado["nombres"];
                postulante.ApellidoPaterno = (String)resultado["apellidopaterno"];
                postulante.ApellidoMaterno = (String)resultado["apellidomaterno"];
                postulante.Sexo = (String)resultado["sexo"];
                postulante.FechaNacimiento = (String)resultado["fechanacimiento"];
                postulante.Contrasena = (String)resultado["contrasena"];
            }
            conexion.Close();
            return postulante;
        }
        public void EliminarPostulante(String correo)
        {
            if (this.ObtenerPostulante(correo) != null)
            {
                conexion.Open();
                String sentencia = "DELETE FROM tbpostulante  WHERE correo='" + correo + "'";
                SqlCommand comando = new SqlCommand(sentencia, conexion);
                comando.ExecuteNonQuery();
                conexion.Close();
            }
            else
            {
                throw new Exception("El Postulante no existe");
            }
        }
        public Postulante ModificarPostulante(Postulante postulante)
        {
            if (this.ObtenerPostulante(postulante.Correo) != null)
            {
                conexion.Open();
                String sentencia = "UPDATE tbpostulante SET nombres='" + postulante.Nombres + "', apellidopaterno='" + postulante.ApellidoPaterno + "', apellidomaterno='" + postulante.ApellidoMaterno + "', sexo='" + postulante.Sexo + "', fechanacimiento=convert(datetime,'" + postulante.FechaNacimiento + "',103), contrasena='" + postulante.Contrasena + "' FROM tbpostulante WHERE correo='" + postulante.Correo + "'";
                SqlCommand comando = new SqlCommand(sentencia, conexion);
                comando.ExecuteNonQuery();
                conexion.Close();
            }
            else
            {
                throw new Exception("El Postulante no existe");
            }
            return this.ObtenerPostulante(postulante.Correo);
        }
    }
}